package com.br.negocio.controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.br.negocio.dao.CorDAO;
import com.br.negocio.vo.CorVO;

@Service("controllerCor")
public class ControllerCor {

	@Resource
	private CorDAO corDAO;
	
	public void atualizarCor(CorVO tipoVO) {
		
		if (tipoVO == null) {
			throw new IllegalArgumentException("uma tipo valido e obrigat�rio.");
		}
		
		if ((tipoVO.getDescricao() == null) ||
			(tipoVO.getDescricao().trim().equals(""))) {
			throw new IllegalArgumentException("Uma descricaoo e necessaria para o tipo.");
		}
		
		if ((!corDAO.validaDuplicado(tipoVO)) &&
			(tipoVO.getCodigo() == 0)) {
			throw new IllegalArgumentException("Esta tipo ja existe.");
		}

		if (tipoVO.getCodigo() == 0) {
			tipoVO.setDataCriacao(new Date());
			tipoVO.setDataAlteracao(new Date());
			corDAO.inserirCor(tipoVO);
		} else {
			tipoVO.setDataAlteracao(new Date());
			corDAO.atualizarCor(tipoVO);
		}
	}

	public void removerCor(CorVO tipoVO) {
		
		if (tipoVO == null) {
			throw new IllegalArgumentException("Um tipo valido e obrigatorio.");
		}
		
		if (tipoVO.getCodigo() == 0) {
			throw new IllegalStateException("A entidade tem um codigo invalido: " + tipoVO.getDescricao());
		}
		
		corDAO.removerCor(tipoVO);
	}

	public CorVO obterCor(CorVO tipoVO) {
		
		if (tipoVO == null) {
			throw new IllegalArgumentException("Uma tipo valida e obrigatorio.");
		}

		return corDAO.obterCor(tipoVO);
	}
	
	public ArrayList<CorVO> obterListaCorPdf() {

		return (ArrayList<CorVO>) corDAO.obterListaCorPdf();
	}

	public List<CorVO> obterListaCor() {
		return corDAO.obterListaCor();
	}
	
}